package com.touzhijia.authority.api;

import com.touzhijia.authority.domain.dto.request.AuthenticationReq;
import com.touzhijia.authority.domain.dto.request.AuthorizationReq;
import com.touzhijia.authority.domain.dto.response.AuthenticationRes;
import com.touzhijia.authority.domain.dto.response.AuthorizationRes;
import com.touzhijia.authority.domain.entity.Permission;
import com.touzhijia.authority.domain.entity.Role;
import retrofit.http.Body;
import retrofit.http.GET;
import retrofit.http.POST;
import retrofit.http.Path;

import java.util.List;

/**
 * 作者： lzw<br/>
 * 创建时间：2018-03-26 10:10 <br/>
 */
public interface AuthorityClient {

    /**
     * 查询用户所有的角色
     */
    @GET("/api/auth/{username}/role")
    List<Role> findUserAllRole(@Path("username") String username);

    /**
     * 查询用户所有的角色(只返回角色名称)
     */
    @GET("/api/auth/{username}/role_str")
    List<String> findUserAllRoleStr(@Path("username") String username);

    /**
     * 查询用户所有的权限
     */
    @GET("/api/auth/{username}/permission")
    List<Permission> findUserAllPermission(@Path("username") String username);

    /**
     * 查询用户所有的权限(只返回权限字符串)
     */
    @GET("/api/auth/{username}/permission_str")
    List<String> findUserAllPermissionStr(@Path("username") String username);

    /**
     * 用户身份认证
     */
    @POST("/api/auth/authentication")
    AuthenticationRes authentication(@Body AuthenticationReq authenticationReq);

    /**
     * 用户身份认证(使用模块名称)
     */
    @POST("/api/auth/authentication/{module}")
    AuthenticationRes authentication(@Path("module") String module, @Body AuthenticationReq authenticationReq);

    /**
     * 用户权限认证
     */
    @POST("/api/auth/authorization")
    AuthorizationRes authorization(@Body AuthorizationReq authorizationReq);

    /**
     * 查询全部权限
     */
    @GET("/api/auth/permission")
    List<Permission> findAllPermission();

    /**
     * 查询一个模块的所有权限
     */
    @GET("/api/auth/permission/{module}")
    List<Permission> findAllPermission(@Path("module") String module);
}
